class SurveyDetail {
    constructor() {
        this.init();
    }

    init() {
        this.bindEvents();
        this.initData();
    }

    bindEvents() {
        // 返回按钮事件
        $('.back-btn').on('click', () => {
            history.back();
        });

        // 提交按钮事件
        $('.submit-btn').on('click', () => {
            this.handleSubmit();
        });

        // 添加弹窗相关的事件绑定
        $('.success-modal .close-btn, .success-modal .back-button').on('click', () => {
            this.hideSuccessModal();
            history.back();
        });
    }

    // 初始化数据
    initData() {
        // 获取URL参数中的客户代码
        const code = UrlUtil.getParam('code');
        if (!code) {
            Message.warning('客户代码不能为空');
            setTimeout(() => {
                history.back();
            }, 1500);
            return;
        }

        // 加载客户信息
        this.loadCustomerInfo(code);
        // 加载产品列表
        this.loadProducts();
    }

    // 加载客户信息
    async loadCustomerInfo(code) {
        try {
            const response = await request.get('/customer/info', { code });

            if (response.success) {
                $('.info-text[data-field="code"]').text(response.data.code);
                $('.info-text[data-field="name"]').text(response.data.name);
            } else {
                Message.error(response.message || '加载客户信息失败');
            }
        } catch (error) {
            console.error('加载客户信息失败:', error);
            Message.error('网络错误，加载客户信息失败');
        }
    }

    // 加载产品列表
    async loadProducts() {
        try {
            const response = await request.get('/products');

            if (response.success) {
                const $select = $('.form-input[name="product"]');
                response.data.forEach(item => {
                    $select.append(`<option value="${item.id}">${item.name}</option>`);
                });
            } else {
                Message.error(response.message || '加载产品列表失败');
            }
        } catch (error) {
            console.error('加载产品列表失败:', error);
            Message.error('网络错误，加载产品列表失败');
        }
    }

    // 验证表单
    validateForm() {
        // 验证产品是否选择
        if (!$('select[name="product"]').val()) {
            Message.warning('请选择产品');
            return false;
        }

        // 验证满意度评价是否都已选择
        const questions = ['surface', 'size'];
        for (const name of questions) {
            if (!$(`input[name="${name}"]:checked`).val()) {
                Message.warning('请完成所有满意度评价');
                return false;
            }
        }

        // 验证服务质量是否至少选择一项
        if (!$('input[name="service"]:checked').length) {
            Message.warning('请至少选择一项满意的服务质量');
            return false;
        }

        return true;
    }

    // 收集表单数据
    collectFormData() {
        // 收集服务质量多选值
        const serviceItems = [];
        $('input[name="service"]:checked').each(function () {
            serviceItems.push($(this).val());
        });

        return {
            customerCode: $('.info-text[data-field="code"]').text(), // 更新获取客户代码的方式
            productId: $('select[name="product"]').val(),
            surface: $('input[name="surface"]:checked').val(),
            size: $('input[name="size"]:checked').val(),
            serviceItems: serviceItems,
            orderType: $('.form-input[name="orderType"]').val(),
            suggestion: $('.textarea[name="suggestion"]').val(),
            problem: $('.textarea[name="problem"]').val()
        };
    }

    // 处理提交
    async handleSubmit() {
        if (!this.validateForm()) {
            return;
        }

        const formData = this.collectFormData();
        const $submitBtn = $('.submit-btn');

        try {
            $submitBtn.prop('disabled', true).addClass('loading').text('提交中...');

            const response = await request.post('/survey/submit', formData);

            if (response.success) {
                this.showSuccessModal();
            } else {
                Message.error(response.message || '提交失败');
            }
        } catch (error) {
            console.error('提交失败:', error);
            Message.error('网络错误，请稍后重试');
        } finally {
            $submitBtn.prop('disabled', false).removeClass('loading').text('提交');
        }
    }

    // 显示成功弹窗
    showSuccessModal() {
        $('.success-modal').fadeIn(300);
    }

    // 隐藏成功弹窗
    hideSuccessModal() {
        $('.success-modal').fadeOut(300);
    }
}

// 页面加载完成后初始化
$(document).ready(() => {
    new SurveyDetail();
}); 